package com.tboss.template.system.dao;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import com.tboss.global.helpers.sqlSession.SqlSessionSupport;
import com.tboss.template.system.dto.FunctionDto;
import com.tboss.template.system.dto.GroupDto;
import com.tboss.template.system.dto.PrivateGrpFnDto;

@Repository
public class FunctionDao extends SqlSessionSupport {

	@Autowired
	public FunctionDao(@Qualifier("sqlSession")SqlSession sqlSession){
		super(sqlSession);
	}
	
	@Override
	public String getNameSpace() {
		return "function";
	}

	public Integer getFnListCnt(FunctionDto dto){
		return super.queryForObject("getFnListCnt", dto);
	}
	
	public List<FunctionDto> getFnList(FunctionDto dto){
		return super.queryForList("getFnList", dto);
	}
	
	public FunctionDto getFnInfo(String fnId){
		return super.queryForObject("getFnInfo", fnId);
	}
	
	public List<GroupDto> getFnGroups(String fnId){
		return super.queryForList("getFnGroups", fnId);
	}
	
	public List<GroupDto> getPrivateGrpLst(PrivateGrpFnDto pDto){
		return super.queryForList("getPrivateGrpLst", pDto);
	}
	
	public Integer existFnId(String fnId){
		return super.queryForObject("existFnId", fnId);
	}
	
	public Integer existFnAlias(FunctionDto dto){
		return super.queryForObject("existFnAlias", dto);
	}
	
	public void deletePrivateGrpLst(String fnId){
		super.queryForObject("deletePrivateGrpLst", fnId);
	}
	
	public void addFnInfo(FunctionDto dto){
		super.queryForObject("addFnInfo", dto);
	}
	
	public void addPrivateGrpLst(PrivateGrpFnDto dto){
		super.queryForObject("addPrivateGrpLst", dto);
	}
	
	public void updateFnInfo(FunctionDto dto){
		super.queryForObject("updateFnInfo", dto);
	}
	
	public void updateFnGroups(FunctionDto dto){		
		super.queryForObject("updatePrivateGrpLst", dto);
		super.queryForObject("updateCdIdFnGroups", dto);
		super.queryForObject("updateFnParentIdFnGroups", dto);
		super.queryForObject("updateFnGroupIdFnGroups", dto);
	}
	
	public void updateGrpChgChkField(ArrayList<String> grpList){
		super.queryForObject("updateGrpChgChkField", grpList);
	}
	
}
